#ifndef __HAL_ADC_H__
#define __HAL_ADC_H__

#include "gbl_types.h"
#include "os_api.h"
/*===========================================================================

                          Type definition.

===========================================================================*/
#define ADC_CHANNEL_ADC0  (0x00)
#define ADC_CHANNEL_ADC1  (0x01)




/*===========================================================================

                          INTERNAL FUNCTION DECLARATIONS

===========================================================================*/

/*****************************************************************
* Function: hal_AdcConfig
*
* Description:
* 	该函数用于配置ADC测量最大电压。
* 
* Parameters:
* 	mode	  	[in] 	配置ADC最大测量电压
*                       0：默认值，0-1.2v
*                       1：默认值，0-1.8v
* Return:
* 	0 函数执行成功
*	-1 函数执行失败
*
*****************************************************************/
int hal_AdcConfig(UINT8 mode);

/*****************************************************************
* Function: hal_AdcRead
*
* Description:
* 	该函数用于读取ADC测量电压。
* 
* Parameters:
* 	adc_channel 	[in] 	ADC通道。详见引脚说明
*                        
* Return:
* 	0 :未测量到电压或者测量电压为0
*	>0 :测量到电压， 单位mv (± 20mv)
*
*****************************************************************/
UINT16 hal_AdcRead(UINT8 adc_channel);

/*****************************************************************
* Function: hal_AdcReadEx
*
* Description:
* 	该函数用于读取ADC测量电压。
* 
* Parameters:
* 	adc_channel 	[in] 	ADC通道。详见引脚说明
* 	cnt          	[in] 	采样次数，多次采样计算平均值(1-16)
*                        
* Return:
* 	0 :未测量到电压或者测量电压为0
*	>0 :测量到电压， 单位mv (± 20mv)
*
*****************************************************************/
UINT16 hal_AdcReadEx(UINT8 adc_channel, UINT8 cnt);


/*****************************************************************
* Function: hal_AdcVbatRead
*
* Description:
* 	该函数用于读取电源电压。
* 
* Parameters:
* 	None
*                        
* Return:
* 	0 :未测量到电压或者测量电压为0
*	>0 :电源电压， 单位mv (± 20mv)
*
*****************************************************************/
UINT16 hal_AdcVbatRead(void);

#endif
